package com.sykj.cloud.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sykj.cloud.common.core.annotation.Excel;
import com.sykj.cloud.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 系统功能菜单对象 sys_menus
 *
 * @author mr.will
 * @date 2021-03-22
 */
public class SysMenu extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 功能ID */
    private String guid;

    /** 系统定义ID */
    @Excel(name = "系统定义ID")

    private String systemDefineId;

    /** 名称 */
    @Excel(name = "名称")

    private String name;

    /** 简称 */
    @Excel(name = "简称")

    private String shortName;

    /** 上级ID */
    @Excel(name = "上级ID")

    private String parentId;

    /** 排序号 */
    @Excel(name = "排序号")

    private Integer orderSeq;

    /** 程序类型 */
    @Excel(name = "程序类型")

    private Integer programType;

    /** 功能URL */
    @Excel(name = "功能URL")

    private String menuPath;

    /** 菜单图标 */
    @Excel(name = "菜单图标")

    private String icon;

    /** 描述 */
    @Excel(name = "描述")

    private String description;

    /** 样式CSS */
    @Excel(name = "样式CSS")

    private String cssText;

    /** 页面权限 */
    @Excel(name = "页面权限")

    private String pagePrivilege;

    /** 跳转模式 */
    @Excel(name = "跳转模式")

    private Integer jumpType;

    /** 帮助文章ID */
    @Excel(name = "帮助文章ID")

    private String helpArticleId;

    /** 是否有效 */
    @Excel(name = "是否有效")

    private Integer valid;

    /** 是否锁定 */
    @Excel(name = "是否锁定")

    private Integer lock;

    /** 删除人 */
    @Excel(name = "删除人")

    private String deleteBy;

    /** 删除时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "删除时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deleteTime;

    /** 是否删除 */
    @Excel(name = "是否删除")

    private Integer deleted;

    /** 菜单类型 M目录 C菜单 F按钮 */
    @Excel(name = "菜单类型 M目录 C菜单 F按钮")

    private String menuType;

    /** 权限标识 */
    @Excel(name = "权限标识")

    private String perms;

    /** 是否为外链 */
    @Excel(name = "是否为外链")

    private Integer frame;

    /** 是否缓存 */
    @Excel(name = "是否缓存")

    private Integer cache;

    /** 组件地址 */
    @Excel(name = "组件地址")

    private String component;

    /** 子菜单 */
    private List<SysMenu> children = new ArrayList<SysMenu>();

    public List<SysMenu> getChildren() {
        return children;
    }

    public void setChildren(List<SysMenu> children) {
        this.children = children;
    }

    public void setGuid(String guid)
    {
        this.guid = guid;
    }

    public String getGuid()
    {
        return guid;
    }
    public void setSystemDefineId(String systemDefineId)
    {
        this.systemDefineId = systemDefineId;
    }

    public String getSystemDefineId()
    {
        return systemDefineId;
    }
    public void setName(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }
    public void setShortName(String shortName)
    {
        this.shortName = shortName;
    }

    public String getShortName()
    {
        return shortName;
    }
    public void setParentId(String parentId)
    {
        this.parentId = parentId;
    }

    public String getParentId()
    {
        return parentId;
    }
    public void setOrderSeq(Integer orderSeq)
    {
        this.orderSeq = orderSeq;
    }

    public Integer getOrderSeq()
    {
        return orderSeq;
    }
    public void setProgramType(Integer programType)
    {
        this.programType = programType;
    }

    public Integer getProgramType()
    {
        return programType;
    }
    public void setMenuPath(String menuPath)
    {
        this.menuPath = menuPath;
    }

    public String getMenuPath()
    {
        return menuPath;
    }
    public void setIcon(String icon)
    {
        this.icon = icon;
    }

    public String getIcon()
    {
        return icon;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }
    public void setCssText(String cssText)
    {
        this.cssText = cssText;
    }

    public String getCssText()
    {
        return cssText;
    }
    public void setPagePrivilege(String pagePrivilege)
    {
        this.pagePrivilege = pagePrivilege;
    }

    public String getPagePrivilege()
    {
        return pagePrivilege;
    }
    public void setJumpType(Integer jumpType)
    {
        this.jumpType = jumpType;
    }

    public Integer getJumpType()
    {
        return jumpType;
    }
    public void setHelpArticleId(String helpArticleId)
    {
        this.helpArticleId = helpArticleId;
    }

    public String getHelpArticleId()
    {
        return helpArticleId;
    }
    public void setValid(Integer valid)
    {
        this.valid = valid;
    }

    public Integer getValid()
    {
        return valid;
    }
    public void setLock(Integer lock)
    {
        this.lock = lock;
    }

    public Integer getLock()
    {
        return lock;
    }
    public void setDeleteBy(String deleteBy)
    {
        this.deleteBy = deleteBy;
    }

    public String getDeleteBy()
    {
        return deleteBy;
    }
    public void setDeleteTime(Date deleteTime)
    {
        this.deleteTime = deleteTime;
    }

    public Date getDeleteTime()
    {
        return deleteTime;
    }
    public void setDeleted(Integer deleted)
    {
        this.deleted = deleted;
    }

    public Integer getDeleted()
    {
        return deleted;
    }
    public void setMenuType(String menuType)
    {
        this.menuType = menuType;
    }

    public String getMenuType()
    {
        return menuType;
    }
    public void setPerms(String perms)
    {
        this.perms = perms;
    }

    public String getPerms()
    {
        return perms;
    }
    public void setFrame(Integer frame)
    {
        this.frame = frame;
    }

    public Integer getFrame()
    {
        return frame;
    }
    public void setCache(Integer cache)
    {
        this.cache = cache;
    }

    public Integer getCache()
    {
        return cache;
    }
    public void setComponent(String component)
    {
        this.component = component;
    }

    public String getComponent()
    {
        return component;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("guid", getGuid())
            .append("systemDefineId", getSystemDefineId())
            .append("name", getName())
            .append("shortName", getShortName())
            .append("parentId", getParentId())
            .append("orderSeq", getOrderSeq())
            .append("programType", getProgramType())
            .append("menuPath", getMenuPath())
            .append("icon", getIcon())
            .append("description", getDescription())
            .append("cssText", getCssText())
            .append("pagePrivilege", getPagePrivilege())
            .append("jumpType", getJumpType())
            .append("helpArticleId", getHelpArticleId())
            .append("valid", getValid())
            .append("lock", getLock())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("deleteBy", getDeleteBy())
            .append("deleteTime", getDeleteTime())
            .append("deleted", getDeleted())
            .append("menuType", getMenuType())
            .append("perms", getPerms())
            .append("frame", getFrame())
            .append("cache", getCache())
            .append("component", getComponent())
            .toString();
    }
}
